#ifndef NETWORKFACTORY_H
#define NETWORKFACTORY_H

#include <QVector>
#include "nodes/node.h"
#include "network.h"


class NetworkFactory
{
public:
    enum NetworkType
    {
        FACULTY,
        BURGLAR,
        SIMPLE_BERNOULLI,
        GOLFERS,
        WACKY,
        ORBIT,
        POPCORN
    };

    static Network * buildNetwork(NetworkType type);
    static Network * buildFacultyNetwork();
    static Network * buildBurglarNetwork();
    static Network * buildSimpleBernoulli();
    static Network * buildGolfersNetwork();
    static Network * buildWackyNetwork();
    static Network * buildOrbitNetwork();
    static Network * buildPopcornNetwork();
    static Network * buildChainNetwork(int numChildren);
    static Network * buildYNetwork(int numChildren);
    static Network * buildPeakNetwork();
    static Network * buildFunkySimple();
    static Network * buildRandomNetwork(int numNodes, int numCrossLinks = 0);
    static Node *    buildRandomNetwork(int cnt, Network * network);
};

#endif // NETWORKFACTORY_H
